export async function calc(file: File) {
  const fileName = await getFileName(file);
  return fileName;
}
/**
 * 根据文件对象获取根据文件内容得到的hash文件名
 * @param {*} file 文件对象
 */
export async function getFileName(file: File) {
  const fileHash = await calculateFileHash(file);
  const fileExtension = file.name.split(".").pop();
  return `${fileHash}.${fileExtension}`;
}
/**
 * 计算文件的hash字符串
 * @param {*} file
 * @returns
 */
async function calculateFileHash(file: File) {
  const arrayBuffer = await file.arrayBuffer();
  const hashBuffer = await crypto.subtle.digest("SHA-256", arrayBuffer);
  return bufferToHex(hashBuffer);
}
/**
 * 把ArrayBuffer转成16进制的字符串
 * @param {*} buffer
 * @returns
 */
function bufferToHex(buffer: ArrayBuffer) {
  return Array.from(new Uint8Array(buffer))
    .map((b) => b.toString(16).padStart(2, "0"))
    .join("");
}
